package com.tonann.app.mqtt.mulitipleServer;


import com.alibaba.fastjson2.JSONObject;
import com.tonann.app.domain.AppSensor;
import com.tonann.app.mqtt.dao.DataBody;
import com.tonann.app.mqtt.dao.MQTTSensor;
import com.tonann.app.mqtt.dao.MessageBody;
import com.tonann.app.task.AnalyseTask;
import com.tonann.common.core.redis.RedisCache;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;

import javax.annotation.Resource;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.util.Collection;

//@Component
public class MQTTMsgProcess {

//    @Resource
//    RedisCache redisCache;
//
//    @Resource
//    private AnalyseTask analyseTask;
//
//
//    @Bean
//    public void process() {
//        new Thread() {
//            public void run() {
//                processData();
//            }
//        }.start();
//    }
//
//
//    public void processData() {
//        while (true) {
//            Collection<String> keys = redisCache.keys("mqtt:*");
//            for (String key : keys) {
//                String value = redisCache.getCacheObject(key);
//                redisCache.deleteObject(key);
//                if (value != null) {
//                    try {
//                        MessageBody messageBody = JSONObject.parseObject(value, MessageBody.class);
//                        for (DataBody dataBody : messageBody.getValues()) {
////                           long start = System.nanoTime();
//                            String deviceId = dataBody.getId();
//                            String v = dataBody.getValue();
//                            if (v.trim().equals("true")) {
//                                v = "1";
//                            } else if (v.trim().equals("false")) {
//                                v = "0";
//                            }
//                            AppSensor sensor = MQTTSensor.getInstance().map.get(deviceId);
//                            if (sensor != null) {
//                                float result = new BigDecimal(v).setScale(2, RoundingMode.DOWN).floatValue();
//                                Long magnification = sensor.getMagnification() == null ? 1L : sensor.getMagnification();
//                                float r = result / magnification;
//                                BigDecimal bigDecimal = new BigDecimal(r + "");
//                                bigDecimal = bigDecimal.setScale(2, RoundingMode.DOWN);
//                                sensor.setValue(String.valueOf(bigDecimal.floatValue()));
//                                try {
//                                    analyseTask.faultAnalyse(sensor);
//                                } catch (Exception e) {
//                                    e.printStackTrace();
//                                }
//                            }
////                           long end = System.nanoTime();
////                           System.out.println("一个数据处理时间："+ (end- start));
//                        }
//                    } catch (Exception e) {
//                        System.out.println("MQTT消息解释错误" + value);
//                    }
//                }
//            }
//        }
//    }
}
